草庐IT

c++ - 保留类名 Visual C++

全部标签

c - ruby的rb_raise如何停止调用它的c函数的执行?

如果你在C中将一个ruby​​方法写成一个使用rb_raise的函数,调用后的函数部分将不会被执行,程序将停止,你会认为rb_raise使用了exit()。但是如果你在ruby​​中拯救异常,比如:beginmethod_that_raises_an_exceptionrescueendputs'Youwilstillgethere.'ruby代码将继续,但您的函数将停止执行。rb_raise如何实现这一目标? 最佳答案 推测它使用了setjmp(在调用方法之前)和longjmp(在rb_raise中)。

c - (U) Ruby 扩展 : rb_gc_mark() and instance variables

我正在编写定义类的ruby​​扩展。如果我使用Data_Wrap_Struct()来实现我对rb_define_alloc_func()的回调,我是否需要手动标记和释放实例变量?还是仍然为我处理? 最佳答案 Ruby的GC将收集在您的Ruby对象的实例变量中引用的所有Ruby对象。您不必也不应该自己释放Ruby实例变量(即在您的扩展中使用rb_iv_set()/rb_iv_get()访问的任何对象)。但是,如果包装的Cstruct引用Ruby对象,那么您必须在传递给Data_Wrap_Struct()的mark回调中标记这些对象。(

c - 如何处理 ruby​​ ffi gem 中的 ruby​​ 数组?

我想使用ruby​​ffigem调用一个c函数,该函数将一个数组作为输入变量,输出是一个数组。也就是说,c函数看起来像:double*my_function(doublearray[],intsize)我创建了ruby​​绑定(bind):moduleMyModuleextendFFI::Libraryffi_lib'c'ffi_lib'my_c_lib'attach_function:my_function,[:pointer,int],:pointer我想用ruby​​代码调用:result_array=MyModule.my_function([4,6,4],3)我该怎么做?

ruby - 为什么 Ruby 在抛出 NameError 异常后仍保留代码求值?

我无法向自己解释的简单代码:putsaifa=1这导致warning:found=inconditional,shouldbe==NameError:undefinedlocalvariableormethod'a'formain:Object不过,现在检查a我们可以看到,它已被定义:a#=>1尽管抛出异常,为什么a仍被分配给1?来自docs:Theconfusioncomesfromtheout-of-orderexecutionoftheexpression.Firstthelocalvariableisassigned-tothenyouattempttocallanonexis

c - 我如何在 Ruby 的 C 扩展 API 上检索 'standalone' 符号

我想从C函数返回多个值,恕我直言,散列是一个不错的选择。我首先使用rb_intern('A_KEY')创建key,但扩展崩溃了。现在,我正在使用rb_str_new2,但我更喜欢符号。如何创建一个新符号,并在不引用类或方法的情况下使用它? 最佳答案 您需要使用ID2SYM宏将从rb_intern获得的标识符转换为ruby​​符号。尝试改变rb_intern('A_KEY')到ID2SYM(rb_intern('A_KEY')) 关于c-我如何在Ruby的C扩展API上检索'standal

Ruby:是否可以在不对类名进行硬编码的情况下确定我的 Ruby 方法在其中执行的类?

我是Ruby的Nuby。我正在寻找一种方法来获取当前执行行的方法的包含类对象。如果不对类名进行硬编码,这可能吗?#hardcodedexampleclassAdefto_s"Iama"+A.to_s#Class"A"ishardcodedhere.IsthereanotherwaytoreferencetheclassA?endend我想也许self.class会起作用,但是当类被子类化时,它并没有给我我想要的东西。#FollowingOutputs=>IamaCamelIamaCamelIamaCamel#butIwant=>IamaCamelIamaMammalIamaAnimal

c - 如何访问符号链接(symbolic link)的 ctime、mtime、...?

在unix上,符号链接(symboliclink)是指向另一个文件的指针。不仅文件而且符号链接(symboliclink)都有ctime、mtime、……。我知道可以访问符号链接(symboliclink)时间,因为ls显示了它。如果我使用ruby​​的File#ctime、File#mtime之一,我总是得到符号链接(symboliclink)指向的文件的属性,而不是符号链接(symboliclink)的属性。我如何在ruby​​中读取这些值?如果这在ruby​​中不可行,请告诉我如何在C中实现。在那种情况下我会编写自己的c扩展。 最佳答案

ruby - whenever gem 能否保留 crontab 文件中的现有行?

我正在使用:ruby1.9.2每当0.7.2Capistrano2.9.0capistrano-ext1.2.1我在部署时与Capistrano结合使用来管理我的crontab文件。我注意到它每次都会完全重写我的crontab文件。我希望能够在cron中设置环境变量来控制PATH和MAILTO设置,它们是常规的cron环境变量。有没有办法让whenever不覆盖整个crontab文件,以便我可以将自定义添加到我的crontab文件并确保它们会持续存在? 最佳答案 是的,你可以做到这一点。您只需要为写入crontab的任务分配一个标识

ruby - "begin"和 "end"是不是保留字?

我对Ruby中的保留字有点困惑。Matz与人合着的《TheRubyProgrammingLanguage》说begin和end是语言的保留字。它们肯定在句法上用于标记block。但是,该语言中的范围对象具有名为begin和end的方法,如(1..10).end=>10现在,对此进行测试,我发现我确实可以在对象上定义名为“begin”和“end”的方法,但如果我尝试将变量命名为“begin”,它会失败。(这里有一个使用它作为方法名的示例,它确实有效......:)classFoodefbeginputs"hi"endendFoo.new.begin所以,我想我是在问,像这样的保留字的实际

ruby - 在 Ruby 哈希中查找保留重复项

我有一个散列数组,我需要在其中根据散列之间的一个匹配值查找和存储匹配项。a=[{:id=>1,:name=>"Jim",:email=>"jim@jim.jim"},{:id=>2,:name=>"Paul",:email=>"paul@paul.paul"},{:id=>3,:name=>"Tom",:email=>"tom@tom.tom"},{:id=>1,:name=>"Jim",:email=>"jim@jim.jim"},{:id=>5,:name=>"Tom",:email=>"tom@tom.tom"},{:id=>6,:name=>"Jim",:email=>"jim